package com.app.service;

import com.app.domain.zl.TensionUploadRecord;
import com.app.domain.zl.ZljlData;
import com.app.domain.zl.ZljlDataUploadStatus;
import com.app.domain.zl.ZljlInfo;
import com.app.domain.zl.ZljlRealData;
import com.app.domain.zl.Zlrw;

import java.util.Date;
import java.util.List;


public interface ZlService {

    List<ZljlInfo> queryZljlInfoPage(String searchIsAll);

    public List<ZljlData> findAllZljlData();

    void updateUploadedById(String uploaded, Integer zljlInfoId);

    ZljlInfo queryZljlInfoById(int id);

    List<ZljlData> findZljlDataByQlbh(String qlbh);

    List<ZljlRealData> queryZljlRealData(String qlbh, String gsbh);
    
    // 添加单个孔数据上传方法
    boolean uploadSingleHoleData(ZljlInfo zljlInfo, ZljlData zljlData, String shebeibianhao);
    
    // 获取梁号对应的孔数
    List<Zlrw> queryZlrwListByLh(String lh);
    
    // 获取已完成张拉的孔数
    int countFinishedHolesByQlbh(String qlbh);
    
    // 获取upload_status为0的梁信息
    List<ZljlInfo> findZljlInfoByUploadStatus();
    
    // 更新ZljlInfo的上传状态和时间
    void updateZljlInfoUploadStatus(int id, String uploaded, String lastUploadedTime);
    
    // 更新ZljlData的上传标识和时间
    void updateZljlDataUploadFlag(int id, String uploadedFlag, String uploadTime, String syjid, String fguid);
    
    // 查询未上传的已完成张拉的孔数据
    List<ZljlData> findUnuploadedFinishedHoles(String qlbh);
    
    // 插入上传记录
    void insertUploadRecord(TensionUploadRecord record);
    
    // 新增方法：插入上传状态记录
    void insertZljlDataUploadStatus(ZljlDataUploadStatus status);
    
    // 新增方法：更新上传状态记录
    void updateZljlDataUploadStatus(ZljlDataUploadStatus status);
    
    // 新增方法：根据zljlDataId查询上传状态
    ZljlDataUploadStatus findZljlDataUploadStatusByZljlDataId(int zljlDataId);
    
    // 新增方法：查询未上传的已完成张拉的孔数据(使用新的上传状态表)
    List<ZljlData> findUnuploadedFinishedHolesWithNewStatus(String qlbh);
    
    // 新增方法：插入或更新上传状态记录
    void insertOrUpdateZljlDataUploadStatus(ZljlDataUploadStatus status);
}